{
 "metadata": {
  "name": ""
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from sklearn.datasets import fetch_mldata"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 1
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "mnist = fetch_mldata('MNIST Original')"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 2
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# normalize and use the native DT precision level \n",
      "X = (mnist.data / 255.).astype(np.float32)\n",
      "X_train, y_train = X[:60000], mnist.target[:60000]\n",
      "X_test, y_test = X[60000:], mnist.target[60000:]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 3
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from IPython.parallel import Client\n",
      "\n",
      "client = Client()\n",
      "lb_view = client.load_balanced_view()\n",
      "len(lb_view)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 4,
       "text": [
        "95"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from sklearn.ensemble import ExtraTreesClassifier\n",
      "from pyrallel.model_selection import RandomizedGridSeach\n",
      "from pyrallel.mmap_utils import persist_cv_splits\n",
      "from sklearn.cross_validation import ShuffleSplit"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 5
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "n_samples_dev = 60000  # make it possible to use a subsample of the trainingset\n",
      "X_dev, y_dev = X_train[:n_samples_dev], y_train[:n_samples_dev]\n",
      "\n",
      "cv_split_filenames = persist_cv_splits(X_dev, y_dev, n_cv_iter=2,\n",
      "                                       test_size=0.25, random_state=0)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 6
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "params = {\n",
      "    'criterion': ['gini', 'entropy'],\n",
      "    'max_features': [10, 20, 30, 50, 100, 200, 500, 768],\n",
      "    'min_samples_split': [2, 5, 10, 15, 20, 25, 30, 40, 50, 75, 100, 150, 200],\n",
      "}\n",
      "\n",
      "et = ExtraTreesClassifier(n_estimators=100, random_state=0)\n",
      "rgs = RandomizedGridSeach(lb_view, random_state=0)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 7
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "rgs.launch_for_splits(et, params, cv_split_filenames)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 8,
       "text": [
        "Progress: 00% (000/416)\n"
       ]
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "print(rgs.report(n_top=100))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Progress: 100% (416/416)\n",
        "\n",
        "Rank 1: validation: 0.97377 (+/-0.00103) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 100, 'min_samples_split': 2, 'criterion': 'gini'}\n",
        "Rank 2: validation: 0.97273 (+/-0.00107) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 50, 'min_samples_split': 2, 'criterion': 'gini'}\n",
        "Rank 3: validation: 0.97253 (+/-0.00047) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 30, 'min_samples_split': 2, 'criterion': 'gini'}\n",
        "Rank 4: validation: 0.97247 (+/-0.00133) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 200, 'min_samples_split': 2, 'criterion': 'entropy'}\n",
        "Rank 5: validation: 0.97223 (+/-0.00150) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 100, 'min_samples_split': 2, 'criterion': 'entropy'}\n",
        "Rank 6: validation: 0.97193 (+/-0.00067) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 100, 'min_samples_split': 5, 'criterion': 'gini'}\n",
        "Rank 7: validation: 0.97183 (+/-0.00083) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 200, 'min_samples_split': 2, 'criterion': 'gini'}\n",
        "Rank 8: validation: 0.97177 (+/-0.00097) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 50, 'min_samples_split': 2, 'criterion': 'entropy'}\n",
        "Rank 9: validation: 0.97167 (+/-0.00080) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 20, 'min_samples_split': 2, 'criterion': 'entropy'}\n",
        "Rank 10: validation: 0.97157 (+/-0.00123) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 200, 'min_samples_split': 5, 'criterion': 'gini'}\n",
        "Rank 11: validation: 0.97143 (+/-0.00163) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 100, 'min_samples_split': 5, 'criterion': 'entropy'}\n",
        "Rank 12: validation: 0.97143 (+/-0.00143) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 50, 'min_samples_split': 5, 'criterion': 'gini'}\n",
        "Rank 13: validation: 0.97143 (+/-0.00083) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 50, 'min_samples_split': 5, 'criterion': 'entropy'}\n",
        "Rank 14: validation: 0.97130 (+/-0.00077) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 30, 'min_samples_split': 2, 'criterion': 'entropy'}\n",
        "Rank 15: validation: 0.97123 (+/-0.00037) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 30, 'min_samples_split': 5, 'criterion': 'gini'}\n",
        "Rank 16: validation: 0.97117 (+/-0.00023) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 20, 'min_samples_split': 2, 'criterion': 'gini'}\n",
        "Rank 17: validation: 0.97107 (+/-0.00133) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 200, 'min_samples_split': 5, 'criterion': 'entropy'}\n",
        "Rank 18: validation: 0.97103 (+/-0.00123) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 500, 'min_samples_split': 2, 'criterion': 'gini'}\n",
        "Rank 19: validation: 0.97100 (+/-0.00133) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 500, 'min_samples_split': 2, 'criterion': 'entropy'}\n",
        "Rank 20: validation: 0.97070 (+/-0.00083) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 20, 'min_samples_split': 5, 'criterion': 'gini'}\n",
        "Rank 21: validation: 0.97057 (+/-0.00083) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 768, 'min_samples_split': 2, 'criterion': 'gini'}\n",
        "Rank 22: validation: 0.97053 (+/-0.00053) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 500, 'min_samples_split': 5, 'criterion': 'gini'}\n",
        "Rank 23: validation: 0.97047 (+/-0.00100) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 768, 'min_samples_split': 2, 'criterion': 'entropy'}\n",
        "Rank 24: validation: 0.97043 (+/-0.00110) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 500, 'min_samples_split': 5, 'criterion': 'entropy'}\n",
        "Rank 25: validation: 0.97040 (+/-0.00113) train: 0.99992 (+/-0.00001):\n",
        " {'max_features': 50, 'min_samples_split': 10, 'criterion': 'gini'}\n",
        "Rank 26: validation: 0.97040 (+/-0.00080) train: 0.99999 (+/-0.00001):\n",
        " {'max_features': 200, 'min_samples_split': 10, 'criterion': 'gini'}\n",
        "Rank 27: validation: 0.97037 (+/-0.00097) train: 0.99997 (+/-0.00001):\n",
        " {'max_features': 100, 'min_samples_split': 10, 'criterion': 'gini'}\n",
        "Rank 28: validation: 0.97020 (+/-0.00080) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 20, 'min_samples_split': 5, 'criterion': 'entropy'}\n",
        "Rank 29: validation: 0.97010 (+/-0.00083) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 30, 'min_samples_split': 5, 'criterion': 'entropy'}\n",
        "Rank 30: validation: 0.97000 (+/-0.00147) train: 0.99997 (+/-0.00001):\n",
        " {'max_features': 50, 'min_samples_split': 10, 'criterion': 'entropy'}\n",
        "Rank 31: validation: 0.96950 (+/-0.00097) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 768, 'min_samples_split': 5, 'criterion': 'gini'}\n",
        "Rank 32: validation: 0.96950 (+/-0.00090) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 10, 'min_samples_split': 2, 'criterion': 'entropy'}\n",
        "Rank 33: validation: 0.96930 (+/-0.00123) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 768, 'min_samples_split': 5, 'criterion': 'entropy'}\n",
        "Rank 34: validation: 0.96920 (+/-0.00193) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 200, 'min_samples_split': 10, 'criterion': 'entropy'}\n",
        "Rank 35: validation: 0.96907 (+/-0.00127) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 10, 'min_samples_split': 2, 'criterion': 'gini'}\n",
        "Rank 36: validation: 0.96897 (+/-0.00050) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 500, 'min_samples_split': 10, 'criterion': 'entropy'}\n",
        "Rank 37: validation: 0.96897 (+/-0.00110) train: 0.99989 (+/-0.00002):\n",
        " {'max_features': 20, 'min_samples_split': 10, 'criterion': 'gini'}\n",
        "Rank 38: validation: 0.96887 (+/-0.00087) train: 0.99974 (+/-0.00001):\n",
        " {'max_features': 200, 'min_samples_split': 15, 'criterion': 'gini'}\n",
        "Rank 39: validation: 0.96883 (+/-0.00043) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 100, 'min_samples_split': 10, 'criterion': 'entropy'}\n",
        "Rank 40: validation: 0.96877 (+/-0.00043) train: 0.99997 (+/-0.00001):\n",
        " {'max_features': 30, 'min_samples_split': 10, 'criterion': 'gini'}\n",
        "Rank 41: validation: 0.96873 (+/-0.00100) train: 0.99997 (+/-0.00001):\n",
        " {'max_features': 500, 'min_samples_split': 10, 'criterion': 'gini'}\n",
        "Rank 42: validation: 0.96847 (+/-0.00107) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 10, 'min_samples_split': 5, 'criterion': 'entropy'}\n",
        "Rank 43: validation: 0.96847 (+/-0.00093) train: 0.99994 (+/-0.00001):\n",
        " {'max_features': 30, 'min_samples_split': 10, 'criterion': 'entropy'}\n",
        "Rank 44: validation: 0.96843 (+/-0.00123) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 10, 'min_samples_split': 5, 'criterion': 'gini'}\n",
        "Rank 45: validation: 0.96843 (+/-0.00037) train: 0.99944 (+/-0.00004):\n",
        " {'max_features': 50, 'min_samples_split': 15, 'criterion': 'gini'}\n",
        "Rank 46: validation: 0.96810 (+/-0.00163) train: 0.99968 (+/-0.00006):\n",
        " {'max_features': 100, 'min_samples_split': 15, 'criterion': 'gini'}\n",
        "Rank 47: validation: 0.96810 (+/-0.00050) train: 0.99996 (+/-0.00000):\n",
        " {'max_features': 768, 'min_samples_split': 10, 'criterion': 'gini'}\n",
        "Rank 48: validation: 0.96783 (+/-0.00097) train: 1.00000 (+/-0.00000):\n",
        " {'max_features': 768, 'min_samples_split': 10, 'criterion': 'entropy'}\n",
        "Rank 49: validation: 0.96780 (+/-0.00060) train: 0.99979 (+/-0.00003):\n",
        " {'max_features': 200, 'min_samples_split': 15, 'criterion': 'entropy'}\n",
        "Rank 50: validation: 0.96747 (+/-0.00107) train: 0.99908 (+/-0.00003):\n",
        " {'max_features': 200, 'min_samples_split': 20, 'criterion': 'gini'}\n",
        "Rank 51: validation: 0.96733 (+/-0.00107) train: 0.99973 (+/-0.00004):\n",
        " {'max_features': 500, 'min_samples_split': 15, 'criterion': 'gini'}\n",
        "Rank 52: validation: 0.96723 (+/-0.00057) train: 0.99972 (+/-0.00003):\n",
        " {'max_features': 100, 'min_samples_split': 15, 'criterion': 'entropy'}\n",
        "Rank 53: validation: 0.96713 (+/-0.00053) train: 0.99992 (+/-0.00003):\n",
        " {'max_features': 20, 'min_samples_split': 10, 'criterion': 'entropy'}\n",
        "Rank 54: validation: 0.96700 (+/-0.00093) train: 0.99988 (+/-0.00001):\n",
        " {'max_features': 500, 'min_samples_split': 15, 'criterion': 'entropy'}\n",
        "Rank 55: validation: 0.96693 (+/-0.00073) train: 0.99892 (+/-0.00006):\n",
        " {'max_features': 20, 'min_samples_split': 15, 'criterion': 'gini'}\n",
        "Rank 56: validation: 0.96690 (+/-0.00030) train: 0.99879 (+/-0.00006):\n",
        " {'max_features': 100, 'min_samples_split': 20, 'criterion': 'gini'}\n",
        "Rank 57: validation: 0.96680 (+/-0.00047) train: 0.99832 (+/-0.00003):\n",
        " {'max_features': 50, 'min_samples_split': 20, 'criterion': 'gini'}\n",
        "Rank 58: validation: 0.96680 (+/-0.00073) train: 0.99929 (+/-0.00009):\n",
        " {'max_features': 50, 'min_samples_split': 15, 'criterion': 'entropy'}\n",
        "Rank 59: validation: 0.96667 (+/-0.00033) train: 0.99914 (+/-0.00006):\n",
        " {'max_features': 30, 'min_samples_split': 15, 'criterion': 'entropy'}\n",
        "Rank 60: validation: 0.96663 (+/-0.00050) train: 0.99924 (+/-0.00011):\n",
        " {'max_features': 30, 'min_samples_split': 15, 'criterion': 'gini'}\n",
        "Rank 61: validation: 0.96657 (+/-0.00103) train: 0.99981 (+/-0.00003):\n",
        " {'max_features': 768, 'min_samples_split': 15, 'criterion': 'entropy'}\n",
        "Rank 62: validation: 0.96653 (+/-0.00093) train: 0.99782 (+/-0.00016):\n",
        " {'max_features': 30, 'min_samples_split': 20, 'criterion': 'gini'}\n",
        "Rank 63: validation: 0.96617 (+/-0.00143) train: 0.99969 (+/-0.00000):\n",
        " {'max_features': 768, 'min_samples_split': 15, 'criterion': 'gini'}\n",
        "Rank 64: validation: 0.96617 (+/-0.00070) train: 0.99810 (+/-0.00006):\n",
        " {'max_features': 200, 'min_samples_split': 25, 'criterion': 'gini'}\n",
        "Rank 65: validation: 0.96587 (+/-0.00040) train: 0.99977 (+/-0.00008):\n",
        " {'max_features': 10, 'min_samples_split': 10, 'criterion': 'gini'}\n",
        "Rank 66: validation: 0.96587 (+/-0.00040) train: 0.99971 (+/-0.00004):\n",
        " {'max_features': 10, 'min_samples_split': 10, 'criterion': 'entropy'}\n",
        "Rank 67: validation: 0.96550 (+/-0.00150) train: 0.99880 (+/-0.00009):\n",
        " {'max_features': 200, 'min_samples_split': 20, 'criterion': 'entropy'}\n",
        "Rank 68: validation: 0.96547 (+/-0.00153) train: 0.99848 (+/-0.00008):\n",
        " {'max_features': 100, 'min_samples_split': 20, 'criterion': 'entropy'}\n",
        "Rank 69: validation: 0.96540 (+/-0.00007) train: 0.99774 (+/-0.00001):\n",
        " {'max_features': 50, 'min_samples_split': 20, 'criterion': 'entropy'}\n",
        "Rank 70: validation: 0.96537 (+/-0.00117) train: 0.99771 (+/-0.00002):\n",
        " {'max_features': 100, 'min_samples_split': 25, 'criterion': 'gini'}\n",
        "Rank 71: validation: 0.96530 (+/-0.00070) train: 0.99923 (+/-0.00001):\n",
        " {'max_features': 500, 'min_samples_split': 20, 'criterion': 'gini'}\n",
        "Rank 72: validation: 0.96510 (+/-0.00137) train: 0.99902 (+/-0.00007):\n",
        " {'max_features': 500, 'min_samples_split': 20, 'criterion': 'entropy'}\n",
        "Rank 73: validation: 0.96500 (+/-0.00087) train: 0.99911 (+/-0.00007):\n",
        " {'max_features': 768, 'min_samples_split': 20, 'criterion': 'gini'}\n",
        "Rank 74: validation: 0.96497 (+/-0.00030) train: 0.99737 (+/-0.00008):\n",
        " {'max_features': 20, 'min_samples_split': 20, 'criterion': 'gini'}\n",
        "Rank 75: validation: 0.96483 (+/-0.00090) train: 0.99877 (+/-0.00008):\n",
        " {'max_features': 20, 'min_samples_split': 15, 'criterion': 'entropy'}\n",
        "Rank 76: validation: 0.96470 (+/-0.00063) train: 0.99642 (+/-0.00002):\n",
        " {'max_features': 100, 'min_samples_split': 25, 'criterion': 'entropy'}\n",
        "Rank 77: validation: 0.96467 (+/-0.00127) train: 0.99719 (+/-0.00008):\n",
        " {'max_features': 200, 'min_samples_split': 25, 'criterion': 'entropy'}\n",
        "Rank 78: validation: 0.96467 (+/-0.00153) train: 0.99720 (+/-0.00016):\n",
        " {'max_features': 30, 'min_samples_split': 20, 'criterion': 'entropy'}\n",
        "Rank 79: validation: 0.96437 (+/-0.00137) train: 0.99871 (+/-0.00009):\n",
        " {'max_features': 768, 'min_samples_split': 20, 'criterion': 'entropy'}\n",
        "Rank 80: validation: 0.96433 (+/-0.00027) train: 0.99850 (+/-0.00028):\n",
        " {'max_features': 10, 'min_samples_split': 15, 'criterion': 'gini'}\n",
        "Rank 81: validation: 0.96423 (+/-0.00130) train: 0.99678 (+/-0.00004):\n",
        " {'max_features': 200, 'min_samples_split': 30, 'criterion': 'gini'}\n",
        "Rank 82: validation: 0.96400 (+/-0.00100) train: 0.99747 (+/-0.00007):\n",
        " {'max_features': 500, 'min_samples_split': 25, 'criterion': 'entropy'}\n",
        "Rank 83: validation: 0.96390 (+/-0.00090) train: 0.99611 (+/-0.00009):\n",
        " {'max_features': 100, 'min_samples_split': 30, 'criterion': 'gini'}\n",
        "Rank 84: validation: 0.96387 (+/-0.00047) train: 0.99819 (+/-0.00001):\n",
        " {'max_features': 500, 'min_samples_split': 25, 'criterion': 'gini'}\n",
        "Rank 85: validation: 0.96370 (+/-0.00143) train: 0.99628 (+/-0.00010):\n",
        " {'max_features': 30, 'min_samples_split': 25, 'criterion': 'gini'}\n",
        "Rank 86: validation: 0.96360 (+/-0.00087) train: 0.99684 (+/-0.00013):\n",
        " {'max_features': 50, 'min_samples_split': 25, 'criterion': 'gini'}\n",
        "Rank 87: validation: 0.96357 (+/-0.00010) train: 0.99548 (+/-0.00014):\n",
        " {'max_features': 50, 'min_samples_split': 25, 'criterion': 'entropy'}\n",
        "Rank 88: validation: 0.96333 (+/-0.00140) train: 0.99488 (+/-0.00001):\n",
        " {'max_features': 200, 'min_samples_split': 30, 'criterion': 'entropy'}\n",
        "Rank 89: validation: 0.96327 (+/-0.00113) train: 0.99468 (+/-0.00017):\n",
        " {'max_features': 30, 'min_samples_split': 25, 'criterion': 'entropy'}\n",
        "Rank 90: validation: 0.96317 (+/-0.00097) train: 0.99436 (+/-0.00009):\n",
        " {'max_features': 100, 'min_samples_split': 30, 'criterion': 'entropy'}\n",
        "Rank 91: validation: 0.96303 (+/-0.00123) train: 0.99816 (+/-0.00002):\n",
        " {'max_features': 10, 'min_samples_split': 15, 'criterion': 'entropy'}\n",
        "Rank 92: validation: 0.96303 (+/-0.00097) train: 0.99678 (+/-0.00004):\n",
        " {'max_features': 20, 'min_samples_split': 20, 'criterion': 'entropy'}\n",
        "Rank 93: validation: 0.96303 (+/-0.00017) train: 0.99509 (+/-0.00020):\n",
        " {'max_features': 50, 'min_samples_split': 30, 'criterion': 'gini'}\n",
        "Rank 94: validation: 0.96297 (+/-0.00230) train: 0.99801 (+/-0.00006):\n",
        " {'max_features': 768, 'min_samples_split': 25, 'criterion': 'gini'}\n",
        "Rank 95: validation: 0.96273 (+/-0.00013) train: 0.99388 (+/-0.00026):\n",
        " {'max_features': 200, 'min_samples_split': 40, 'criterion': 'gini'}\n",
        "Rank 96: validation: 0.96260 (+/-0.00013) train: 0.99421 (+/-0.00008):\n",
        " {'max_features': 30, 'min_samples_split': 30, 'criterion': 'gini'}\n",
        "Rank 97: validation: 0.96257 (+/-0.00137) train: 0.99549 (+/-0.00016):\n",
        " {'max_features': 20, 'min_samples_split': 25, 'criterion': 'gini'}\n",
        "Rank 98: validation: 0.96253 (+/-0.00133) train: 0.99700 (+/-0.00004):\n",
        " {'max_features': 768, 'min_samples_split': 25, 'criterion': 'entropy'}\n",
        "Rank 99: validation: 0.96253 (+/-0.00147) train: 0.99698 (+/-0.00007):\n",
        " {'max_features': 500, 'min_samples_split': 30, 'criterion': 'gini'}\n",
        "Rank 100: validation: 0.96233 (+/-0.00000) train: 0.99637 (+/-0.00003):\n",
        " {'max_features': 10, 'min_samples_split': 20, 'criterion': 'gini'}\n"
       ]
      }
     ],
     "prompt_number": 73
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "rgs.boxplot_parameters()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x2ac9f10>"
       ]
      }
     ],
     "prompt_number": 77
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "et_final = ExtraTreesClassifier(n_estimators=1000,\n",
      "                                max_features=100,\n",
      "                                min_samples_split=2,\n",
      "                                n_jobs=16, random_state=0)\n",
      "%time et_final.fit(X_train, y_train)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "CPU times: user 8.36 s, sys: 8.87 s, total: 17.2 s\n",
        "Wall time: 6min 58s\n"
       ]
      },
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 74,
       "text": [
        "ExtraTreesClassifier(bootstrap=False, compute_importances=None,\n",
        "           criterion='gini', max_depth=None, max_features=100,\n",
        "           min_density=None, min_samples_leaf=1, min_samples_split=2,\n",
        "           n_estimators=1000, n_jobs=16, oob_score=False, random_state=0,\n",
        "           verbose=0)"
       ]
      }
     ],
     "prompt_number": 74
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%time test_score = et_final.score(X_test, y_test)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "CPU times: user 3.38 s, sys: 3.36 s, total: 6.74 s\n",
        "Wall time: 10.7 s\n"
       ]
      }
     ],
     "prompt_number": 75
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "test_error = 1. - test_score\n",
      "test_error"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 76,
       "text": [
        "0.024299999999999988"
       ]
      }
     ],
     "prompt_number": 76
    }
   ],
   "metadata": {}
  }
 ]
}